﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Maestro
{
    public partial class Provincia : Form
    {
        public Provincia()
        {
            InitializeComponent();
        }

        private void Provincia_Load(object sender, EventArgs e)
        {
            LoadGridProvincia();
        }

        private void LoadGridProvincia()
        {
            LogicaNegocio.ProvinciaBLL provinciaBLL = new LogicaNegocio.ProvinciaBLL();
            gridProvincia.DataSource = provinciaBLL.Listar();
            gridProvincia.ClearSelection();
        }

        private void LimpiarFormulario()
        {
            txtNombreProvincia.ResetText();
            btnAgregar.Tag = null;
            btnAgregar.Text = "Guardar";

            btnCancelar.Visible = false;
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            LogicaNegocio.ProvinciaBLL provinciaBLL = new LogicaNegocio.ProvinciaBLL();

            try
            {
                if (btnAgregar.Tag == null)
                {
                    //insertar
                    Entidades.Provincia newProvincia =
                        new Entidades.Provincia()
                        {
                            NombreProvincia = txtNombreProvincia.Text.Trim(),
                            FechaRegistro = DateTime.Now,
                            Activo = 1
                        };

                    int resultado = provinciaBLL.Guardar(newProvincia);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Provincia registrada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridProvincia();
                    }
                }
                else
                {
                    if (btnAgregar.Tag.ToString() == "M")
                    {
                        //actualizar
                        if (gridProvincia.SelectedRows.Count > 0)
                        {
                            Entidades.Provincia updProvincia =
                                new Entidades.Provincia()
                                {
                                    IdProvincia = (gridProvincia.SelectedRows[0].DataBoundItem as Entidades.Provincia).IdProvincia,
                                    NombreProvincia = txtNombreProvincia.Text.Trim(),
                                    FechaModificacion = DateTime.Now                                    
                                };

                            int resultado = provinciaBLL.Actualizar(updProvincia);

                            if (resultado > 0)
                            {
                                MessageBox.Show("Provincia actualizada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                LimpiarFormulario();
                                LoadGridProvincia();
                            }
                        } 
                    }
                }
            }
            catch (ApplicationException aex)
            {
                MessageBox.Show(aex.Message, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridProvincia.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Esta seguro en eliminar la provincia?\nNota: Eliminar la provincia también elimina los distritos que le pertenecen.", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (dr == DialogResult.Yes)
                {                    
                    Entidades.Provincia selProvincia = gridProvincia.SelectedRows[0].DataBoundItem as Entidades.Provincia;

                    LogicaNegocio.ProvinciaBLL provinciaBLL = new LogicaNegocio.ProvinciaBLL();
                    int resultado = provinciaBLL.Eliminar(selProvincia);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Provincia eliminada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridProvincia();
                    }
                }
            }
        }

        private void gridProvincia_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridProvincia.DataSource != null)
            {
                gridProvincia.Columns["IdProvincia"].Visible = false;
                gridProvincia.Columns["NombreProvincia"].HeaderText = "Provincia";
                gridProvincia.Columns["NombreProvincia"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridProvincia.Columns["Activo"].Visible = false;
                gridProvincia.Columns["FechaRegistro"].Visible = false;
                gridProvincia.Columns["FechaModificacion"].Visible = false;
                gridProvincia.Columns["UsuarioModificacion"].Visible = false;
                gridProvincia.Columns["UsuarioRegistro"].Visible = false;
            }
        }

        private void gridProvincia_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridProvincia.SelectedRows.Count > 0)
            {
                Entidades.Provincia selectedProvincia = gridProvincia.SelectedRows[0].DataBoundItem as Entidades.Provincia;

                if (selectedProvincia != null)
                {
                    btnAgregar.Tag = "M";
                    btnAgregar.Text = "Modificar";

                    btnCancelar.Visible = true;

                    txtNombreProvincia.Text = selectedProvincia.NombreProvincia.Trim();
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimpiarFormulario();

            gridProvincia.ClearSelection();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
